package com.aos.erp.message.remote;

import com.aos.dto.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

@FeignClient(value = "mq-service",fallback = MQServiceHystrix.class)
public interface MQService {

    @PostMapping(value = "/mq/sendTMQ")
    public RespDTO<List<TMQResultDTO>> sendTMQ(@RequestBody TMQSendDTO tmqSendDTO);

    /**
     * App模板消息推送
     * @param appPushDTO
     * @return
     */
    @PostMapping(value = "/mq/sendAppTMQ")
    public RespDTO<List<TMQResultDTO>> sendAppTMQ(@RequestBody AppPushDTO appPushDTO);

    /**
     * 公众号模板消息推送
     * @param wxMiniTemplateDTO
     * @return
     */
    @PostMapping(value = "/mq/sendWxTMQ")
    public RespDTO<List<TMQResultDTO>> sendWxTMQ(@RequestBody WxMiniTemplateDTO wxMiniTemplateDTO);

    /**
     * 小程序模板消息推送
     * @param wxMiniTemplateDTO
     * @return
     */
    @PostMapping(value = "/mq/sendAppTMQ")
    public RespDTO<List<TMQResultDTO>> sendAppTMQ(@RequestBody WxMiniTemplateDTO wxMiniTemplateDTO);

    @PostMapping(value = "/mq/sendMessage")
    public RespDTO sendMessage(@RequestBody MessageSendDTO sendDTO);

    /**
     * 消费消息
     * @param consumeDTO
     * @return
     */
    @PostMapping(value = "/mq/consumeMessage")
    public RespDTO<MessageDTO> consumeMessage(@RequestBody MessageConsumeDTO consumeDTO);

    /**
     * 发送短信
     * @param smsDTO
     * @return
     */
    @PostMapping(value = "/mq/sendSMS")
    public RespDTO sendSMS(@RequestBody SmsDTO smsDTO);
}
